
/*************测试小功能demo **************/
#include <iostream>
//
/* 测试：日志功能代码 */
// #include "../comm/log.hpp"
// using namespace ns_log;

// int main()
// {
//     std::cout << "hello " << std::endl;
//     LOG(Info, "hello %d", 0);
//     LOG(Info, "hello %d", 0);
//     LOG(Info, "hello %d", 0);
//     LOG(Info, "hello %d", 0);
//     LOG(Info, "hello %d", 0);
//     LOG(Info, "hello %d", 0);
//     LOG(Info, "hello %d", 0);
//     LOG(Info, "hello %d", 0);
//     LOG(Warning, "hello %c", 'c');
//     LOG(Error, "hello %s", "xixi");
//     LOG(Fatal, "hello");
//     return 0;
// }

// /* 测试：编译和运行功能是否正确 */
// // 头文件已包含

// int main()
// {
//     if(Compiler::Compile("main"))
//         Runner::run("main", 1, 1024 * 100);
//     return 0;
//}

// #include "compile_run.hpp"

// using namespace ns_compile_and_run;

// int main()
// {

//     CompileAndRun::Start();
//     return 0;
// }

#include "./comm/util.hpp"

using namespace ns_util;
/** 测试写入文件 */
// int main()
// {
//     std::string code = R"(#include<iostream>
// using namespace std;

// int main()
// {
//     std::cout << "hello world" << std::endl;
//     return 0;
// })";
//     FileUtil::WriteFile("./tmp.cc", code);
//     return 0;
// }

/***测试读取文件 */
// int main()
// {
//     std::string content;
//     FileUtil::ReadFile("./tmp.cc", &content);
//     std::cout << content << std::endl;
//     return 0;
// }

/********** 测试整体的编译运行功能代码:选哟由服务器来执行 ***********/
// #include <iostream>
// #include <jsoncpp/json/json.h>

// #include "compile_run.hpp"

// using namespace ns_compile_and_run;

// int main()
// {
//     //1、构建一个json
//     std::string in_json;
//     Json::Value in_value;
//     in_value["code"] = R"(#include<iostream>
// using namespace std;
// int main()
// {
//     int *ptr = nullptr;
//     *ptr = 10;
//     cout << "hello" << endl;
//     return 0;
// })";
//     in_value["input"] = "";
//     in_value["cpulimit"] = 1;
//     in_value["memlimit"] = 30 * 1024; //30MB
//     Json::StyledWriter json_writer;
//     in_json = json_writer.write(in_value);

//     std::cout << in_json << std::endl;

//     //....TODO
//     std::string out_json;
//     CompileAndRun::Start(in_json, &out_json);

//     std::cout << out_json << std::endl;

//     return 0;
// }

/****************测试httplib库************** */
// #include "./comm/httplib.h"
// using namespace httplib;

// int main()
// {
//     Server svr;
//     std::cout << "hello" << std::endl;
//     return 0;
// }

/*********测试boost库 *********/
// #include <boost/algorithm/string.hpp>
// #include <iostream>
// #include <string>
// #include <vector>
// int main()
// {
//     std::string str = "1 回文串 困难 1 3000";
//     std::vector<std::string> content;
//     boost::split(content, str, boost::is_any_of(" "), boost::algorithm::token_compress_on);
//     for(const auto& e : content)
//     {
//         std::cout << e << std::endl;
//     }

//     return 0;
// }

/*********************测试model模块 **************/
//#include "./oj_server/oj_model.hpp"
#include "./comm/util.hpp"
#include <iostream>
int main()
{
    // 测试文件读取
    std::string content;
    ns_util::FileUtil::ReadFile("./oj_server/questions/1/desc.txt", &content);
    std::cout << content << std::endl;
    std::cout << std::endl;
    //测试的时候需要改路径
    // ns_model::Model m;
    // ns_model::Question q;
    // m.GetOneQuestions("1", &q);
    // std::cout << q.number << " 1" << std::endl;
    // std::cout << q.title << " 2" << std::endl;
    // std::cout << q.star << " 3" << std::endl;
    // std::cout << q.cpulimit << " 4" << std::endl;
    // std::cout << q.memlimit << " 5" << std::endl;
    // std::cout << q.header << " 6" << std::endl;
    // std::cout << q.tail << " 7" << std::endl;
    // std::cout << q.desc << " 8" << std::endl;
    return 0;
}

// #include <iostream>
// #include <string>
// #include <ctemplate/template.h>

// int main()
// {
//     std::string html = "./test.html";
//     std::string html_info = "1111";
//     // 建⽴ctemplate参数⽬录结构
//     ctemplate::TemplateDictionary root("test");
//     // unordered_map<string,string> test;
//     // 向结构中添加你要替换的数据，kv的
//     root.SetValue("info", html_info); // test.insert({key, value});

//     // 获取被渲染对象
//     ctemplate::Template *tpl = ctemplate::Template::GetTemplate(html,
//                                                                 ctemplate::DO_NOT_STRIP); // DO_NOT_STRIP：保持html⽹⻚原貌

//     // 开始渲染，返回新的⽹⻚结果到out_html
//     std::string out_html;
//     tpl->Expand(&out_html, &root);

//     std::cout << out_html << std::endl;
//     return 0;
// }
